USE [GD1C2012]
GO
--SP Obtener los registro de viajes a rendir
CREATE PROCEDURE TEQUILASO.sp_buscarRegistroViajeARendir
	@Id_Chofer int,
	@Id_Turno int,
	@fecha datetime	
AS
DECLARE
	@fecha_tmp varchar(10)
BEGIN
	set @fecha_tmp = CONVERT(varchar(10), @fecha, 111)
	select * from (
		select R.Fecha_Hora_InicioViaje, TV.descripcion Tipo_Viaje,R.Cant_Fichas, T.descripcion Turno, T.Valor_Ficha, T.Valor_Bandera, (C.APELLIDO + ', ' + C.NOMBRE) as cliente 
		from TEQUILASO.REGISTRO_VIAJE R,
			TEQUILASO.TIPO_VIAJE TV,
			TEQUILASO.CLIENTE C,
			TEQUILASO.TURNO T
		where R.id_Tipo_Viaje = TV.id
		and R.id_Turno = T.id
		and R.id_cliente  = C.id
		and R.id_Turno = @Id_Turno
		and R.id_Chofer = @Id_Chofer
		and CONVERT(varchar(10), Fecha_Hora_InicioViaje, 111) = @fecha_tmp

		union 

		select R.Fecha_Hora_InicioViaje, TV.descripcion Tipo_Viaje,R.Cant_Fichas, T.descripcion Turno, T.Valor_Ficha, T.Valor_Bandera, '-' 
		from TEQUILASO.REGISTRO_VIAJE R,
			TEQUILASO.TIPO_VIAJE TV,		
			TEQUILASO.TURNO T
		where R.id_Tipo_Viaje = TV.id
		and R.id_Turno = T.id
		and R.id_cliente is null	
		and R.id_Turno = @Id_Turno
		and R.id_Chofer = @Id_Chofer
		and CONVERT(varchar(10), Fecha_Hora_InicioViaje, 111) = @fecha_tmp
	) viajes
	order by Fecha_Hora_InicioViaje
END 
GO
--Calcula el importe a guardar
CREATE FUNCTION TEQUILASO.fn_obtenerImporteARendir(
	@Id_Chofer int,
	@Id_Turno int,
	@fecha datetime	
)
RETURNS money
WITH EXECUTE AS CALLER
AS
BEGIN	
	DECLARE
		@fecha_tmp varchar(10),
		@importe money
	set @fecha_tmp = CONVERT(varchar(10), @fecha, 111)
	select @importe = SUM(T.Valor_Bandera) + SUM(R.Cant_Fichas * T.Valor_Ficha)
	from TEQUILASO.REGISTRO_VIAJE R, TEQUILASO.TURNO T
	where R.Id_Turno = T.id
	and R.Id_Chofer = @Id_Chofer
	and R.Id_Turno = @Id_Turno
	and CONVERT(varchar(10), Fecha_Hora_InicioViaje, 111) = @fecha_tmp
return(ISNULL(@importe, 0))
END
GO

--Registra la facturacion
CREATE PROCEDURE TEQUILASO.sp_rendirCuenta
	@Id_Chofer int,
	@Id_Turno int,
	@fecha datetime	
AS
BEGIN
	IF EXISTS (select * from TEQUILASO.RENDICION_CUENTA
			   where Id_Chofer = @Id_Chofer
			   and Id_Turno = @Id_Turno
			   and Fecha = @fecha
			   )
	begin
		RAISERROR('Ya exite una rendicion de cuenta registrada', 1, 1)
		RETURN
	end
	
	insert into TEQUILASO.RENDICION_CUENTA
           (Id_Chofer ,Id_Turno ,Importe ,Fecha)
    values
           (@Id_Chofer, @Id_Turno, TEQUILASO.fn_obtenerImporteARendir(@Id_Chofer, @Id_Turno, @fecha), @fecha)
END
GO


CREATE  PROCEDURE TEQUILASO.cargarRendicionCuenta
	@Id_chofer int
AS
BEGIN
	SELECT * FROM TEQUILASO.RENDICION_CUENTA WHERE Id_chofer = @Id_chofer
END

--DROP PROCEDURE TEQUILASO.sp_buscarRegistroViajeARendir
--DROP FUNCTION TEQUILASO.fn_obtenerImporteARendir
--DROP PROCEDURE TEQUILASO.sp_rendirCuenta
--EXECUTE TEQUILASO.sp_buscarRegistroViajeARendir 2, 1, '2009/01/01'
--SELECT TEQUILASO.fn_obtenerImporteARendir (2, 1, '2009/01/01')
--Execute TEQUILASO.sp_rendirCuenta 2, 1, '2012/01/01'


--254850
--129513
